Virtualization can refer to the process of creating a virtual, rather than physical, version of a computing system. Virtualization uses software to simulate the existence of hardware and create an environment of virtual computer systems. Establishing a virtualization environment allows an enterprise to run several virtual systems on a small number physical hosts, which can provide economies of scale and greater efficiency.
Over time, a virtualization system in an enterprise may accumulate a number of heterogeneous storage platforms. This may be because of acquisitions, technology refresh, for price reasons, and so on. However, each storage platform comes with its own storage capabilities. Consuming such platforms can be very challenging since there is usually no terminology common to all of the storage platforms. For example, there is no consistent way for an administrator of the virtualization system to specify capability at a high level; for example, requiring a certain number of I/O operations per second (IOPs), requiring that data always encrypted, and so on.
The challenge becomes even greater after initial placement of a virtual machine (VM) in an active virtualization system where there can be many (tens, to hundreds, to thousands) VMs deployed in the enterprise. With each VM having at least one datastore and sometimes more than one datastore associated with it, ensuring that these deployed datastores are in compliance with their respective storage policies over the lifetime of the VM can be a complex and time consuming effort.